#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <string>
#include <stdlib.h>
using namespace std;

//string solve(string s, string t) {
//    // write code here
//    string ret;
//    reverse(s.begin(), s.end());
//    reverse(t.begin(), t.end());
//    int a = s.size() - 1;
//    int b = t.size() - 1;
//    int pre = 0;
//    int k = 0;
//    int num = 0;
//    if (b > a)
//    {
//        swap(s, t);
//        swap(a, b);
//    }
//    if (a == b)
//    {
//        a++;
//    }
//    for (int i = 0; i <= a; i++)
//    {
//        num = 0;
//        for (int j = 0; j <= i; j++)
//        {
//            if (i - j > b )
//            {
//                continue;
//            }
//            int n = (s[j] - '0') * (t[i - j] - '0');
//            num += n;
//        }
//        num += pre;
//        pre = num / 10;
//        k = num % 10;
//        ret.push_back(k + '0');
//    }  
//    reverse(ret.begin(), ret.end());
//    if (ret[0] == '0' && ret.size() != 1)
//    {
//        ret.erase(0, 1);
//    }
//    return ret;
//}
//string solve(string s, string t) {
//    // write code here
//    string ret;
//    reverse(s.begin(), s.end());
//    reverse(t.begin(), t.end());
//    int a = s.size() - 1;
//    int b = t.size() - 1;
//    int pre = 0;
//    int k = 0;
//    int num = 0;
//    if (b > a)
//    {
//        swap(s, t);
//        swap(a, b);
//    }
//    if (a == b)
//    {
//        a++;
//    }
//    for (int i = 0; i <= a; i++)
//    {
//        num = 0;
//        for (int j = 0; j <= i; j++)
//        {
//            if (i - j > b || j >= s.size())
//            {
//                continue;
//            }
//
//            int n = (s[j] - '0') * (t[i - j] - '0');
//            num += n;
//
//        }
//        num += pre;
//        pre = num / 10;
//        k = num % 10;
//        ret.push_back(k + '0');
//    }
//    if (pre > 0)
//    {
//        if (a - b >= 1)
//        {
//            int sum = (s[a] - '0') * (s[b] - '0');
//            sum += pre;
//            while (sum)
//            {
//                ret.push_back(sum % 10 + '0');
//                sum /= 10;
//            }
//        }
//        else
//            ret.push_back(pre + '0');
//    }
//    reverse(ret.begin(), ret.end());
//    if (ret[0] == '0' && ret.size() != 1)
//    {
//        ret.erase(0,1);
//    }
//    return ret;
//}
//int main()
//{
//    string s1 = "heihei";
//    s1.erase(0, 1);
//    //cout << s1.end();
//
//    return 0;
//}


int main()
{
    string s1 ;
    string s2 ;
    while (1)
    {
        cin >> s1 >> s2;
        string ret = solve(s1, s2);
        cout << ret << endl;
    }
    return 0;
}

//string solve(string s, string t) {
//    // write code here
//    if (s.empty())
//    {
//        return t;
//    }
//    if (t.empty())
//    {
//        return s;
//    }
//    string ret;
//    int pre = 0;
//    int a = s.size() -1;
//    int b = t.size() - 1;
//    while (a >= 0 || b >= 0)
//    {
//        int x = a >= 0 ? s[a] - '0' : 0;
//        int y =b >= 0 ? t[b] - '0' : 0;
//        int num = x + y + pre;
//        pre = num / 10;
//        ret.insert(ret.begin(), (num % 10) + '0');
//        a--;
//        b--;
//    }
//    return ret;
//}
//typedef struct ListNode {
//    int val;
//    struct ListNode* next;
//    ListNode(int x) : val(x), next(nullptr) {}
//}LS;
//
//int main()
//{
//       LS a{ 1 };
//    LS b{ 2 };
//    LS c{ 3 };
//    LS d{ 4 };
//    a.next = &b;
//    b.next = &c;
//    c.next = &d;
//    LS* head1 = &a;
//    LS* ret=new LS(0);
//    LS* keep = ret;
//    LS* del=new LS(0);
//    while (head1 != nullptr)
//    {
//        ret->val = head1->val;
//        ret->next = new LS(0);
//        del = ret;
//        ret = ret->next;
//        cout << head1->val << endl;
//        head1 = head1->next;
//    }
//    /*delete(ret);
//    ret == nullptr;*/
//    del->next = nullptr;
//    ret = keep;
//    while (ret)
//    {
//        cout << ret->val;
//        ret = ret->next;
//    }
//    return 0;
//}

//int main()
//{
//    LS a{ 1 };
//    LS b{ 2 };
//    LS c{ 3 };
//    LS d{ 4 };
//    a.next = &b;
//    b.next = &c;
//    c.next = &d;
//    auto head1 = a;
//    
//
//   /* while (head1 != nullptr || head2 != nullptr)
//    {
//        int a = head1 == nullptr ? 0 : head1->val;
//        int b = head2 == nullptr ? 0 : head2->val;
//        head1->val = (a + b + pre) % 10;
//
//        pre = (a + b + pre) / 10;
//        head1 = head1->next;
//        head2 = head2->next;
//    }*/
//    //int num = 1 + 2 + 2;
//	return 0;
//} 